package com.tool.weixin.api;

import net.sf.json.JSONObject;

import org.slf4j.Logger;

import com.tool.weixin.model.AccessToken;
import com.tool.weixin.model.Menu;
import com.tool.weixin.util.HttpUtils;

/**
 * 菜单
 * @author huff
 *
 */
public class MenuApi {
	
	private static final Logger logger = org.slf4j.LoggerFactory.getLogger(MenuApi.class);
	
	/**
	 * 菜单创建（POST） 限1000（次/天）
	 */
	public static final String menu_create_url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN";
	
	public static final String menu_delete_url = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN";

	/**
	 * 清除菜单
	 * @return
	 */
	public static int deleteMenu() {
		AccessToken accessToken = AccessTokenApi.getAccessToken();
		int result = 0;
		// 拼装创建菜单的url
		String url = menu_delete_url.replace("ACCESS_TOKEN", accessToken.getToken());
		// 将菜单对象转换成json字符串
		// 调用接口创建菜单
		JSONObject jsonObject = HttpUtils.httpRequest(url, "POST", "");

		if (null != jsonObject) {
			if (0 != jsonObject.getInt("errcode")) {
				result = jsonObject.getInt("errcode");
				logger.error("删除菜单失败 errcode:{} errmsg:{}", jsonObject.getInt("errcode"), jsonObject.getString("errmsg"));
			}
		}
		return result;
	}
	/**
	 * 创建菜单
	 * @param menu
	 * @return
	 */
	public static int createMenu(Menu menu) {
		AccessToken accessToken = AccessTokenApi.getAccessToken();
		return createMenu(menu, accessToken.getToken());
	}
	
	/**
	 * 创建菜单
	 * 
	 * @param menu 菜单实例
	 * @param accessToken 有效的access_token
	 * @return 0表示成功，其他值表示失败
	 */
	public static int createMenu(Menu menu, String accessToken) {
		int result = 0;

		// 拼装创建菜单的url
		String url = menu_create_url.replace("ACCESS_TOKEN", accessToken);
		// 将菜单对象转换成json字符串
		String jsonMenu = JSONObject.fromObject(menu).toString();
		// 调用接口创建菜单
		JSONObject jsonObject = HttpUtils.httpRequest(url, "POST", jsonMenu);

		if (null != jsonObject) {
			if (0 != jsonObject.getInt("errcode")) {
				result = jsonObject.getInt("errcode");
				logger.error("创建菜单失败 errcode:{} errmsg:{}", jsonObject.getInt("errcode"), jsonObject.getString("errmsg"));
			}
		}

		return result;
	}
}
